package com.thinvent.recommend.manager.manager;

import com.thinvent.recommend.entity.KbFileInfo;
import com.thinvent.recommend.manager.dto.KbFileContentDTO;
import java.util.List;
import java.util.Map;

/**
 * 辅助管理器：负责文档下载解析、向量计算和批量写入 ES
 */
public interface Text2VecHelperManager {

    /**
     * 根据文件信息列表，下载并解析出 KbFileContentDTO 列表
     */
    List<KbFileContentDTO> fetchAndParse(List<KbFileInfo> infos);

    /**
     * 计算 TF–IDF 向量
     */
    Map<String, Map<String, Double>> computeTfIdf(List<KbFileContentDTO> docs);

    /**
     * 把一组关键词当作“查询文档”算 TF–IDF 向量。
     *
     * @param terms 关键词列表
     * @return Map<term, weight>，只返回“查询文档”那一条
     */
    Map<String, Double> computeTfIdfForTerms(List<String> terms) throws Exception;

    /**
     * 将计算好的向量批量 upsert 到 Elasticsearch
     */
    void upsertToElasticsearch(Map<String, Map<String, Double>> vectors);
}
